package com.guoba.demo21thread.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.TimeUnit;

@RestController
@RequestMapping("/api")
public class VirtualThreadController {

    /**
     * 虚拟线程接口：模拟 IO 密集场景（如调用第三方接口、查库）
     * 路径：<a href="http://localhost:8080/api/io-task">...</a>
     * 功能：等待 100ms（模拟 IO 耗时），返回当前线程信息
     */
    @GetMapping("/io-task")
    public String ioIntensiveTask() throws InterruptedException {
        // 模拟 IO 等待（如 MySQL 查询、Redis 操作）
        TimeUnit.MILLISECONDS.sleep(100);

        // 返回线程类型（虚拟线程名含 "virtual"，传统线程名含 "http-nio"）
        Thread currentThread = Thread.currentThread();
        return String.format(
                "任务完成！\n线程类型：%s\n线程名：%s\n线程ID：%d",
                currentThread.isVirtual() ? "虚拟线程" : "传统内核线程",
                currentThread.getName(),
                currentThread.threadId()
        );
    }
}